Search


「當用腦袋在trace code時,最不爽的就是被其他雞毛蒜皮小事中斷,腦袋整個歸零後就...

  • Share this:


「當用腦袋在trace code時,最不爽的就是被其他雞毛蒜皮小事中斷,腦袋整個歸零後就歸巴豆火」

#TDD #IncrementalDelivery

大家應該都有過這種讓人火大的經驗吧!但在工作環境中,卻又很難避免被打擾,那自己能用什麼方式來減少這樣的負面影響呢?

最簡單的方式是,小量增量式的產出。例如切細工作。

當完成的時間點變多,自然處理臨時事務就比較有彈性。即使思緒被打斷,要重新再來的範圍小、成本低。

更完整與根本的作法,是透過TDD來做到增量式的產出,以及透過測試案例甚至living documentation來幫助記憶與理解。

所謂的小量、增量,多小算小到剛好?TDD的開發方式,基本上就是baby step, 每一個測試案例代表一種scenario, 每一個scenario都是從頭走到尾的一條路。每個新的scenario都會走過前面scenario 所建立的production code, 因此新的scenario只要完成與其他scenario不同的部分即可。

所以TDD每次要寫的部分只有一點點,如果再採取top-down方式設計production code, 那最後要完成的只有一堆private functions, 如果再搭配介面導向設計,那職責拆分後要寫的就更少了。

而整個feature/user story已經做到哪邊,完成哪些,透過可讀測試案例(更好的當然是living documentation)跟測試結果,一目了然。

我曾經抽空做一個案子,中間被中斷了四次,每一次都是間隔3週以上,(最後的專案程式碼大概快一萬行的規模),在每次回憶上次做到哪時,大概只需要3-5分鐘看一下specflow的scenarios跟context,就可以繼續往下寫。我都笑稱living documentation是我的儲思盆,而且是大家都看得到、看得懂的儲思盆。

TDD其實就像我常舉的一個比喻:需要完成的功能很大,就像要把水從井裏拉上來一樣。越大,就代表井越深。TDD就像幫你在井上多個卡楯,當你往上拉一點點後,就可以卡住,即使拉到一半沒力氣了,也不會前功盡棄。隨時準備好就可以再拉下一個循環。

這也是我常提到的「開發節奏」,一旦有節奏,就好安排時間,就會避免浪費,就會提高生產力,就會容易進入神馳狀態,就會很順。

寫程式可以這樣寫,不是讓人很愉快嗎? :)


Tags:

About author
我是 Joey Chen,闖蕩江湖的稱號是 91,熱血點火師,專門燃起大家心裡面的熱情與初衷。 目前為 Odd-e Taiwan 的負責人,同時也是 JetBrains 在台灣的培訓夥伴,至今也仍是熱愛學習與享受各種程式語言之美的 programmer。 身為敏捷教練,擅長 Agile、Scrum、LeSS 等敏捷文化與協作框架的落實與導入,如何讓大家 being agile 而不是 doing agile。同時喜歡結合各家所長,例如 Lean, Kanban 等,重點是持續改善、解決問題、端出成果,而不執著於某種特定方法論或框架。 身為技術教練,我也是極限編程(extreme programming)的狂熱者,我擅長用這些技術與工程實踐來提昇產品的品質、團隊的生產力、降低營運風險,因應市場與公司的商業目標,讓團隊能具有高適應與反應能力的基礎建設。例如 實例化需求、ATDD、BDD、TDD、重構、自動化單元測試/整合測試/驗收測試、CI/CD、code review、pair programming、mob-programming 等等。 同時,我也是推崇 極速開發 的 developer,追求從想法到產品程式碼的完成,中間的時間差能趨近於零,也就是劍隨心轉,想到哪,程式碼就長到哪的境界。從想法到實現中間的等待,其實在實務上佔了很大的 context switch 成本,如果能讓這段時間縮到最短,就能比其他人多嘗試更多種解決方案,進而挑選出最剛好的方案。 同時也是技術社群的活躍份子,從 2010 年開始連任九屆的微軟 MVP,兼任 MSDN 論壇板主,也曾經獲得年度 MSDN 文件庫刊登數量世界第一的榮耀。對微軟技術有愛,對 C# 有愛,對自動測試有愛,對重構與設計模式有愛。近年來對 Java, PHP, Python 也充滿濃厚的興趣,曾帶領客戶團隊中不會寫程式的 QA ,一起用 Python 完成超過百個 mobile UI 自動化測試。 擁有超過十年擔任開發團隊 tech leader, trainer, coach 與 mentor 的經驗,進行的企業內部與公開技術培訓課程已超過 100 場,培訓過的開發人員超過 1000 位,擔任研討會與社群活動的講師次數超過 30 次。 同時也是技術書籍的作者與譯者,與朋友合著的書籍包含《ASP.NET MVC 5:網站開發美學》、《ASP.NET MVC 4 網站開發美學》,翻譯的書籍有《單元測試的藝術-第二版》、《敏捷開發實踐》、《進入IT產業必讀的200個 .NET面試決勝題》。 如果想跟我即時互動,歡迎直接私訊或 email 至 [email protected]
請參考:https://tdd.best/about/
View all posts